package gui.dialoge;

import gui.Konstanten;

import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import steuerung.Controller;

/**
 * Ein NeueLieferungDialog wird aufgerufen, wenn eine neue Lieferung erzeugt werden soll.
 * Er gibt die Menge und Art der neuen Lieferung an den Controller weiter.
 * 
 * @author Jan Liebig
 */
public class NeueLieferungDialog extends CustomDialog implements ActionListener {

	private static final long serialVersionUID = 3245378316534721502L;

	private ButtonGroup rdBtnGroup;
	private JRadioButton rdBtnZulieferung;
	private JRadioButton rdBtnAuslieferung;
	private JTextField tfMenge;
	private JButton btnLieferungStarten;
	private JButton btnAbbrechen;

	/**
	 * Initialisiert einen NeueLieferungDialog
	 * 
	 * @param parent
	 */
	public NeueLieferungDialog(Frame parent) {
		super(parent, Konstanten.NEUELIEFERUNG_TITEL);

		initialisieren();
		this.pack();

		zentriereFenster();
	}

	@Override
	public void actionPerformed(ActionEvent ev) {
		switch (ev.getActionCommand()) {
		case Konstanten.NEUELIEFERUNG_BUTTON_LIEFERUNGSTARTEN:
			int menge;

			try {
				menge = Integer.parseInt(tfMenge.getText());

				if (menge <= 0) {
					JOptionPane.showMessageDialog(this,
							Konstanten.NEUELIEFERUNG_DIALOG_MENGEGROESSERNULL);
					break;
				}

				String selected = null;

				if (rdBtnZulieferung.isSelected()) {
					selected = steuerung.Konstanten.ZULIEFERUNG;
				} else if (rdBtnAuslieferung.isSelected()) {
					selected = steuerung.Konstanten.AUSLIEFERUNG;
				}

				Controller.getInstance().setLieferungOptionen(menge, selected);

			} catch (NumberFormatException e) {
				JOptionPane.showMessageDialog(this,
						Konstanten.NEUELIEFERUNG_DIALOG_MENGEGROESSERNULL);
				break;
			}

		case Konstanten.NEUELIEFERUNG_BUTTON_ABBRECHEN:
			schliessen();
			break;
		}
	}

	// Baut den Dialog auf
	private void initialisieren() {
		JPanel inhaltPanel = new JPanel(new GridLayout(3, 2, 5, 5));

		inhaltPanel.setPreferredSize(new Dimension(
				Konstanten.NEUELIEFERUNG_DIALOG_BREITE,
				Konstanten.NEUELIEFERUNG_DIALOG_HOEHE));

		rdBtnGroup = new ButtonGroup();

		rdBtnZulieferung = new JRadioButton(
				Konstanten.NEUELIEFERUNG_RADIOBUTTON_EINGANG);
		rdBtnAuslieferung = new JRadioButton(
				Konstanten.NEUELIEFERUNG_RADIOBUTTON_AUSGANG);

		rdBtnGroup.add(rdBtnZulieferung);
		rdBtnGroup.add(rdBtnAuslieferung);
		rdBtnZulieferung.setSelected(true);

		inhaltPanel.add(rdBtnZulieferung);
		inhaltPanel.add(rdBtnAuslieferung);

		inhaltPanel.add(new JLabel(Konstanten.NEUELIEFERUNG_LABEL_MENGE));

		tfMenge = new JTextField();

		inhaltPanel.add(tfMenge);

		btnLieferungStarten = new JButton(
				Konstanten.NEUELIEFERUNG_BUTTON_LIEFERUNGSTARTEN);
		btnLieferungStarten.addActionListener(this);

		btnAbbrechen = new JButton(Konstanten.NEUELIEFERUNG_BUTTON_ABBRECHEN);
		btnAbbrechen.addActionListener(this);

		inhaltPanel.add(btnLieferungStarten);
		inhaltPanel.add(btnAbbrechen);

		this.add(inhaltPanel);
	}
}